package cn.getech.data.metadata.api;

import cn.getech.data.metadata.api.gateway.model.dto.CollectionNotificationHistory;
import cn.getech.data.metadata.api.gateway.model.dto.CollectionNotificationReceived;
import cn.getech.data.metadata.api.gateway.model.dto.CollectionNotificationUser;
import cn.getech.data.metadata.api.gateway.model.dto.CollectionNotificationUserRelatedness;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

public interface RelatednessNotificationApi {

    /**
     * 保存 通知与业务之间的关系
     * @param collectionNotificationUserRelatedness
     */
    @RequestMapping(value = "/api/dataMetadata/saveRelatednessNotification",method = RequestMethod.POST)
    void saveRelatednessNotification(@RequestBody CollectionNotificationUserRelatedness collectionNotificationUserRelatedness);

    /**
     * 编辑 通知用户组与业务之间的关系
     * @param collectionNotificationUserRelatedness
     * @param id
     * @param type
     */
    @RequestMapping(value = "/api/dataMetadata/updateRelatednessNotification",method = RequestMethod.POST)
    void updateRelatednessNotification(@RequestBody List<CollectionNotificationUserRelatedness> collectionNotificationUserRelatedness,@RequestParam("id") Long id,@RequestParam("type") String type);
    /**
     * 根据用户组id查询需要发送的邮件人
     *
     * @return
     */
    @RequestMapping(value = "/api/dataMetadata/queryReceivedByNotificationUserId",method = RequestMethod.POST)
    List<CollectionNotificationReceived> queryReceivedByNotificationUserId(@RequestParam("notificationUserId") Long notificationUserId);

    /**
     * 查询通知组信息  免打扰时间(多个用户通知组)
     * @param task    关联的id    比如 元数据id  或者质量管理id
     * @param relatednessType  类型  1为元数据   2为质量管理类型
     * @return
     */
    @RequestMapping(value = "/api/dataMetadata/queryNotificaCondition",method = RequestMethod.POST)
    List<CollectionNotificationUser> queryNotificaCondition(@RequestParam("task") Long task, @RequestParam("relatednessType") String relatednessType);


    /**
     * 依照id 查询通知用户组信息
     * @param id
     * @return
     */
    @RequestMapping(value = "/api/dataMetadata/queryByNotificationUseId",method = RequestMethod.POST)
    CollectionNotificationUser  queryByNotificationUseId(@RequestParam("id") Long id);

    /**
     *  依照id 更新 通知组信息
     * @param collectionNotificationUser
     */
    @RequestMapping(value = "/api/dataMetadata/udateNotification",method = RequestMethod.POST)
     void udateNotification(@RequestBody CollectionNotificationUser collectionNotificationUser);

    /**
     * 依照id 更新历史数据  （发送邮件更改状态为 发送成功）
     * @param collectionNotificationHistory
     */
    @RequestMapping(value = "/api/dataMetadata/updateCollectionNotificationHistory",method = RequestMethod.POST)
    void updateCollectionNotificationHistory(@RequestBody CollectionNotificationHistory  collectionNotificationHistory);

    /**
     * 查询历史数据 （依照类型查询历史数据）
     * @return
     */
    @RequestMapping(value = "/api/dataMetadata/queryCollectionNotificationHistory",method = RequestMethod.POST)
    List<CollectionNotificationHistory>  queryCollectionNotificationHistory(@RequestParam("type")String type);


    /**
     * 查询历史数据 （带多条件查询历史数据）
     * @return
     */
    @RequestMapping(value = "/api/dataMetadata/queryCollectionNotificationHistoryByType",method = RequestMethod.POST)
    List<CollectionNotificationHistory>  queryCollectionNotificationHistoryByType(CollectionNotificationHistory collectionNotificationHistory);


    /**
     * 保存历史数据 或者免打扰数据
     * @param collectionNotificationHistory
     */
    @RequestMapping(value = "/api/dataMetadata/saveCollectionNotificationHistory",method = RequestMethod.POST)
    void saveCollectionNotificationHistory(@RequestBody CollectionNotificationHistory collectionNotificationHistory);

    /**
     *  1 元数据类型  2 质量列表
     * 依照 （元数据采集和质量列表。。。。。） id和类型查询关联的用户通知组(编辑回显)
     * @param id
     * @return
     */
    @RequestMapping(value = "/api/dataMetadata/queryCollectionNotificationRelatednessUserId",method = RequestMethod.POST)
     List<CollectionNotificationUser> queryCollectionNotificationRelatednessUserId(@RequestParam("id")Long id, @RequestParam("typse")String typse);
}
